package com.kkk.shop.goods.service;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.kkk.shop.common.util.PageInfoUtil;
import com.kkk.shop.goods.pojo.AGoods;
import com.kkk.shop.goods.pojo.AGoodsBrand;
import com.kkk.shop.goods.pojo.AGoodsCate;

/**
 * 商品操作的接口
 * @author kkk
 * */
public interface IGoodsService
{ 
	/*---商品操作的服务开始-----*/
	/**
	 * 保存一条商品
	 * @param goods	保存的对象
	 * @return	json:{"code":"0","info":"成功","data":{"effect":"","id":""}}
	 */
	JSONObject insertOneGoodsService(AGoods goods);
	/**
	 * 保存一条商品,带参数
	 * @param goods	保存的对象
	 * @param paramMap 文件名和流的名称
	 * @return	json:{"code":"0","info":"成功","data":{"effect":"","id":""}}
	 */
	JSONObject insertOneGoodsService(Map<String,Object>paramMap,AGoods goods);
	
	/**
	 * 更新一条商品
	 * @param goods
	 * @return
	 */
	JSONObject updateOneGoodsService(AGoods goods);
	
	/**
	 * 删除一条商品
	 * @param goods
	 * @return
	 */
	JSONObject deleteOneGoodsService(AGoods goods);
	
	/**
	 * 查询一条商品
	 * @param paramMap	查询条件
	 * @return	返回商品
	 */
	AGoods queryOneGoodsService(Map<String, Object> paramMap);
	/**
	 * 查询多条商品
	 * @param pageInfoUtil	分页对象:如果为null,不分页,如果不为空,分页
	 * @param paramMap	查询条件
	 * @return	返回多条记录
	 */
	List<AGoods> queryMultiGoodsService(PageInfoUtil pageInfoUtil,Map<String, Object> paramMap);
	
	/**
	 * 查询商品的整棵树
	 * @param goodsCateList 存储所有的一级节点
	 * @return 
	 * */
	JSONArray queryTreeGoodsCateService(List<AGoodsCate> goodsCateList,String rootPath);
	/*---商品操作的服务结束-----*/
	
	/*---商品分类操作的服务开始-----*/
	/**
	 * 保存一条商品分类
	 * @param goodsCate	保存的对象
	 * @return	json:{"code":"0","info":"成功","data":{"effect":"","id":""}}
	 */
	JSONObject insertOneGoodsCateService(AGoodsCate goodsCate);
	
	/**
	 * 更新一条商品分类
	 * @param goodsCate
	 * @return
	 */
	JSONObject updateOneGoodsCateService(AGoodsCate goodsCate);
	
	/**
	 * 删除一条商品分类
	 * @param goodsCate
	 * @return
	 */
	JSONObject deleteOneGoodsCateService(AGoodsCate goodsCate);
	
	/**
	 * 查询一条商品分类
	 * @param paramMap	查询条件
	 * @return	返回商品分类
	 */
	AGoodsCate queryOneGoodsCateService(Map<String, Object> paramMap);
	
	/**
	 * 查询多条商品分类
	 * @param pageInfoUtil	分页对象:如果为null,不分页,如果不为空,分页
	 * @param paramMap	查询条件
	 * @return	返回多条记录
	 */
	List<AGoodsCate> queryMultiGoodsCateService(PageInfoUtil pageInfoUtil,Map<String, Object> paramMap);
	/*---- 商品分类操作结束 ----*/
	
	/*---品牌操作的服务开始---*/
	/**
	 * 插入一个品牌
	 * @param goodsBrand
	 * @return JSONObject
	 * */
	JSONObject insertOneAGoodsBrandService(AGoodsBrand goodsBrand);
	
	/**
	 * 插入一个品牌
	 * @param goodsBrand
	 * @param paramMap
	 * @return JSONObject
	 * */
	JSONObject insertOneAGoodsBrandService(Map<String,Object>paramMap,AGoodsBrand goodsBrand);
	
	/**
	 * 更新一个品牌
	 * @param goodsBrand
	 * @return JSONObject
	 * */
	JSONObject updateOneAGoodsBrandService(AGoodsBrand goodsBrand);
	
	/**
	 * 更新一个品牌
	 * @param goodsBrand
	 * @param paramMap
	 * @return JSONObject
	 * */
	JSONObject updateOneAGoodsBrandService(Map<String,Object> paramMap,AGoodsBrand goodsBrand);
	
	/**
	 * 删除一个品牌
	 * @param goodsBrand
	 * @return JSONObject
	 * */
	JSONObject deleteOneAGoodsBrandService(AGoodsBrand goodsBrand);
	
	/**
	 * 查询一个品牌
	 * @param paramMap
	 * @return AGoodsBrand
	 * */
	AGoodsBrand queryOneAGoodsBrandService(Map<String,Object> paramMap);
	
	/**
	 * 查询多个品牌
	 * @param pageInfoUtil
	 * @param paramMap
	 * @return List<AGoodsBrand>
	 * */
	List<AGoodsBrand> queryMultiAGoodsBrandService(PageInfoUtil pageInfoUtil,Map<String,Object> paramMap);
}
